#ifndef CURSOR
#define CURSOR

#include "../node/node.h"
#include "../core/engine/world.h"

namespace sleek
{
    namespace core
    {
        namespace engine
        {
            class interface;
        }
    }
    namespace gui
    {
        class cursor
        {
            public:
                cursor(core::engine::interface*);
                virtual ~cursor();
                virtual INTERFACE_GUI_CODE getType() { return IGT_CURSOR; }

                // not collide type jsute to drop & grab physics elements, so parameter is not used

                virtual void enablePhysics();
                virtual void showCursor(bool);
                virtual void showTexture(bool);
                virtual bool manage(core::device::input*);
                virtual void setTexture(texture::texture*);
                virtual void setPosition(core::math::vector2di);

                virtual core::math::vector2di getPosition();
                virtual texture::texture* getTexture();
                virtual void disablePhysics();
                virtual bool textureIsShow();
                virtual bool cursorIsShow();

                virtual node::Node* pointed();
                virtual node::Node* drop();
                virtual void  grab();

                /**
                *   setClicedSprite(sprite*)
                *   setHoveredSprite(Sprite*)
                *   setElementSprite(Sprite*)
                **/

                virtual void render();
            protected:
                node::physics::Physics *body;
                bool isRender, isVisible;
                core::engine::interface *mom;
                mesh::material rnd;
            private:
                bool physique;
                core::math::vector2di pos;
                texture::texture *tex;
        };
    }
}
#endif // NODE
